{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5df99833",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd \n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "231d56ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>12669</td>\n",
       "      <td>9656</td>\n",
       "      <td>7561</td>\n",
       "      <td>214</td>\n",
       "      <td>2674</td>\n",
       "      <td>1338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7057</td>\n",
       "      <td>9810</td>\n",
       "      <td>9568</td>\n",
       "      <td>1762</td>\n",
       "      <td>3293</td>\n",
       "      <td>1776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6353</td>\n",
       "      <td>8808</td>\n",
       "      <td>7684</td>\n",
       "      <td>2405</td>\n",
       "      <td>3516</td>\n",
       "      <td>7844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13265</td>\n",
       "      <td>1196</td>\n",
       "      <td>4221</td>\n",
       "      <td>6404</td>\n",
       "      <td>507</td>\n",
       "      <td>1788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>22615</td>\n",
       "      <td>5410</td>\n",
       "      <td>7198</td>\n",
       "      <td>3915</td>\n",
       "      <td>1777</td>\n",
       "      <td>5185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>435</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>29703</td>\n",
       "      <td>12051</td>\n",
       "      <td>16027</td>\n",
       "      <td>13135</td>\n",
       "      <td>182</td>\n",
       "      <td>2204</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>436</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>39228</td>\n",
       "      <td>1431</td>\n",
       "      <td>764</td>\n",
       "      <td>4510</td>\n",
       "      <td>93</td>\n",
       "      <td>2346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>437</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>14531</td>\n",
       "      <td>15488</td>\n",
       "      <td>30243</td>\n",
       "      <td>437</td>\n",
       "      <td>14841</td>\n",
       "      <td>1867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>438</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>10290</td>\n",
       "      <td>1981</td>\n",
       "      <td>2232</td>\n",
       "      <td>1038</td>\n",
       "      <td>168</td>\n",
       "      <td>2125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>439</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2787</td>\n",
       "      <td>1698</td>\n",
       "      <td>2510</td>\n",
       "      <td>65</td>\n",
       "      <td>477</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>440 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Channel  Region  Fresh   Milk  Grocery  Frozen  Detergents_Paper  \\\n",
       "0          2       3  12669   9656     7561     214              2674   \n",
       "1          2       3   7057   9810     9568    1762              3293   \n",
       "2          2       3   6353   8808     7684    2405              3516   \n",
       "3          1       3  13265   1196     4221    6404               507   \n",
       "4          2       3  22615   5410     7198    3915              1777   \n",
       "..       ...     ...    ...    ...      ...     ...               ...   \n",
       "435        1       3  29703  12051    16027   13135               182   \n",
       "436        1       3  39228   1431      764    4510                93   \n",
       "437        2       3  14531  15488    30243     437             14841   \n",
       "438        1       3  10290   1981     2232    1038               168   \n",
       "439        1       3   2787   1698     2510      65               477   \n",
       "\n",
       "     Delicassen  \n",
       "0          1338  \n",
       "1          1776  \n",
       "2          7844  \n",
       "3          1788  \n",
       "4          5185  \n",
       "..          ...  \n",
       "435        2204  \n",
       "436        2346  \n",
       "437        1867  \n",
       "438        2125  \n",
       "439          52  \n",
       "\n",
       "[440 rows x 8 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 读取数据\n",
    "Data = pd.read_csv('./Wholesale customers data.csv')\n",
    "Data = pd.DataFrame(Data)\n",
    "Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "218c1dc9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Channel             False\n",
       "Region              False\n",
       "Fresh               False\n",
       "Milk                False\n",
       "Grocery             False\n",
       "Frozen              False\n",
       "Detergents_Paper    False\n",
       "Delicassen          False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 查看数据缺失值\n",
    "pd.isnull(Data).any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "72e09528",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 440 entries, 0 to 439\n",
      "Data columns (total 8 columns):\n",
      " #   Column            Non-Null Count  Dtype\n",
      "---  ------            --------------  -----\n",
      " 0   Channel           440 non-null    int64\n",
      " 1   Region            440 non-null    int64\n",
      " 2   Fresh             440 non-null    int64\n",
      " 3   Milk              440 non-null    int64\n",
      " 4   Grocery           440 non-null    int64\n",
      " 5   Frozen            440 non-null    int64\n",
      " 6   Detergents_Paper  440 non-null    int64\n",
      " 7   Delicassen        440 non-null    int64\n",
      "dtypes: int64(8)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "Data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "972b9141",
   "metadata": {},
   "outputs": [],
   "source": [
    "## 数据标准化处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e3dc3434",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import Normalizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "da22ded8",
   "metadata": {},
   "outputs": [],
   "source": [
    "proc_data  = Normalizer().fit(Data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3925defc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Normalizer()"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "proc_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "e2229349",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = proc_data.transform(Data)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0cdc43f",
   "metadata": {},
   "source": [
    "使用轮廓系数确定k值\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "30e000d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "from sklearn.metrics import silhouette_score\n",
    "from sklearn.metrics import silhouette_samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "bb8ed0fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "cluster = KMeans(n_clusters=3, random_state=0).fit(X) \n",
    "#silhouette_score(X,cluster_.labels_) #计算所有样本的轮廓系数均值。 \n",
    "#silhouette_samples(X,cluster.labels_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "22b59a6c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4478257540380591"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "silhouette_score(X,cluster.labels_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "481f42e8",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.1583482 ,  0.45770601,  0.28318683,  0.20887783,  0.54755076,\n",
       "        0.13320269,  0.45532939,  0.30200538,  0.14841938,  0.6311063 ,\n",
       "        0.4917316 ,  0.60728636,  0.54841472,  0.31891484,  0.4880086 ,\n",
       "        0.60089744,  0.62435019,  0.06177284,  0.46969028,  0.11937786,\n",
       "        0.61423387,  0.03976176,  0.49333509,  0.1982347 ,  0.37440339,\n",
       "        0.51366814,  0.48535871,  0.63591283,  0.61755112,  0.60855232,\n",
       "        0.4830112 ,  0.21779195,  0.63049442,  0.6098147 ,  0.4611207 ,\n",
       "        0.60785698,  0.63700902,  0.07266752,  0.60963723,  0.54490971,\n",
       "        0.33492747,  0.60551388,  0.38314803,  0.59561894,  0.26886746,\n",
       "        0.58385399,  0.62423674,  0.43545659,  0.09855754,  0.63246909,\n",
       "        0.06226792,  0.53236186,  0.64012909,  0.59303288,  0.61995228,\n",
       "        0.15919664,  0.56933111,  0.55439592,  0.64527724,  0.40258775,\n",
       "       -0.01731699,  0.51627638,  0.08720908,  0.53795523,  0.2495559 ,\n",
       "        0.58489329,  0.51123629,  0.34533848,  0.04561449,  0.5798671 ,\n",
       "        0.06276179, -0.04607906,  0.44597595,  0.29133846,  0.27526098,\n",
       "        0.52648909,  0.10450084,  0.55621443,  0.6195284 ,  0.50023582,\n",
       "        0.57688141,  0.60285805,  0.28362276,  0.63048048,  0.48220417,\n",
       "        0.62429543,  0.39764001,  0.50898419,  0.42916513,  0.63889826,\n",
       "        0.51456419,  0.16346959,  0.61472218,  0.42473031,  0.55364601,\n",
       "        0.50727035,  0.5557139 ,  0.38908032,  0.37853409, -0.02728671,\n",
       "        0.26091765,  0.62388605,  0.54073189,  0.48924719,  0.64391232,\n",
       "        0.63357919,  0.60456103,  0.53488688,  0.56011158,  0.52418334,\n",
       "        0.603821  ,  0.43019349,  0.25503453,  0.58692379,  0.62518714,\n",
       "        0.56431842,  0.61839159,  0.22769534,  0.55142347,  0.21872481,\n",
       "        0.63827904,  0.05785462,  0.55650711,  0.06986982,  0.61453245,\n",
       "        0.56812195,  0.32939568,  0.52129424,  0.39307023,  0.59043731,\n",
       "        0.32308297,  0.57979132,  0.65063877,  0.65044649,  0.62177648,\n",
       "        0.55417316,  0.2867047 ,  0.51774319,  0.54256138,  0.08218018,\n",
       "        0.56409823,  0.53265261,  0.64127371,  0.25039391,  0.62243619,\n",
       "        0.32164681,  0.62371734,  0.55384955,  0.1046324 ,  0.60374686,\n",
       "        0.64425152,  0.3249042 ,  0.62779013,  0.22328473,  0.64105463,\n",
       "        0.60830105,  0.57260358,  0.61296932,  0.63115365,  0.59548149,\n",
       "        0.54998281,  0.55727498,  0.62795681,  0.62384555,  0.49480183,\n",
       "        0.36473939,  0.53500022,  0.38532896,  0.58463405,  0.25650711,\n",
       "        0.60244535,  0.5252644 ,  0.62418695,  0.57577766,  0.2318465 ,\n",
       "        0.63720784,  0.63040184,  0.4046072 ,  0.378873  ,  0.25145153,\n",
       "        0.26556808,  0.61237348,  0.59252074,  0.18098627,  0.45655468,\n",
       "        0.2349356 ,  0.41414221,  0.34500573,  0.45761748,  0.58274328,\n",
       "        0.26037862,  0.61221891,  0.57889713,  0.48959389,  0.56585555,\n",
       "        0.21866895,  0.03482552,  0.63519694,  0.36333978,  0.64150759,\n",
       "        0.60680905,  0.60723206,  0.41179948,  0.51115001,  0.26335042,\n",
       "        0.60822922,  0.64908582,  0.42466306,  0.55013666,  0.58991577,\n",
       "        0.6213976 ,  0.62859644,  0.55289383,  0.56828389,  0.62744099,\n",
       "        0.63262535,  0.60453204,  0.63334632,  0.52245589,  0.07998615,\n",
       "        0.62693181,  0.56411604,  0.49043615,  0.25031652,  0.64814858,\n",
       "        0.61851439,  0.5565841 ,  0.02903091,  0.04337656,  0.31444033,\n",
       "        0.26293627,  0.32892093,  0.63873009,  0.42578833,  0.53011458,\n",
       "        0.34925125,  0.51385274,  0.51784623,  0.61122226,  0.62243354,\n",
       "        0.13740068,  0.63753359,  0.59149927,  0.51721892,  0.52688081,\n",
       "        0.57607178,  0.58794385,  0.57489481,  0.58778662,  0.27451411,\n",
       "        0.01960574,  0.602689  ,  0.44585177,  0.4970896 ,  0.07999901,\n",
       "        0.588565  ,  0.48713219, -0.01121242,  0.60556514,  0.64660055,\n",
       "        0.48221533,  0.29828893,  0.61975988,  0.13118116,  0.62591003,\n",
       "        0.24837582,  0.56325428,  0.57118682,  0.42463304,  0.58181553,\n",
       "        0.42903924,  0.16877747,  0.47553206,  0.6026699 ,  0.39273463,\n",
       "        0.09572361,  0.63528964,  0.41483502,  0.18022879,  0.46569136,\n",
       "        0.07018753,  0.36563401,  0.62881528,  0.36881847,  0.64030476,\n",
       "        0.60224359,  0.51069472,  0.10475001,  0.61480625,  0.5657177 ,\n",
       "        0.18172015,  0.15437278,  0.09448949,  0.61811105,  0.62779024,\n",
       "        0.34940757,  0.63307568, -0.06267755,  0.41294864,  0.54036276,\n",
       "        0.53696355,  0.63035396,  0.59869133,  0.50155973,  0.5509176 ,\n",
       "        0.50211219,  0.62715454,  0.65896186,  0.5804882 ,  0.50031687,\n",
       "        0.47998111,  0.62431618,  0.43817485,  0.28507208,  0.38939041,\n",
       "        0.5331278 ,  0.38745299,  0.52550668,  0.59480812,  0.51147287,\n",
       "        0.36738209,  0.37389057,  0.56300298,  0.295513  ,  0.63922708,\n",
       "        0.49962893,  0.31885074,  0.43605737,  0.26835454,  0.35338959,\n",
       "        0.32358633,  0.58803103,  0.61483573,  0.45454632,  0.11738531,\n",
       "        0.57996143,  0.63886618,  0.34548654,  0.30820636,  0.40543311,\n",
       "        0.53569768,  0.61825667,  0.56098119,  0.52325054,  0.24618596,\n",
       "        0.5671156 ,  0.58834006,  0.54138696,  0.11552242,  0.61513462,\n",
       "       -0.06538148,  0.58243567,  0.28020348,  0.55255041,  0.15356943,\n",
       "        0.50551399,  0.55438571,  0.44267999,  0.10360273,  0.33463555,\n",
       "        0.63384085,  0.577216  ,  0.18464929,  0.12245984,  0.18133203,\n",
       "        0.50944846,  0.63573714,  0.32360677,  0.63069993,  0.60866468,\n",
       "        0.64495797,  0.36397813,  0.06380711,  0.46791919,  0.51166652,\n",
       "        0.62745375,  0.48797378,  0.61904327,  0.0629379 ,  0.4970473 ,\n",
       "        0.60055125,  0.07170181,  0.64715066,  0.31294084,  0.36814059,\n",
       "        0.59018658,  0.26819398,  0.63069103,  0.62425788,  0.49727063,\n",
       "        0.50079164,  0.09540842,  0.4734633 ,  0.4034813 ,  0.63249815,\n",
       "        0.50901604,  0.48917603, -0.03392168,  0.25042337,  0.61086995,\n",
       "        0.30715499,  0.22481818,  0.63863566,  0.53646716,  0.56489506,\n",
       "        0.52204066,  0.39310423,  0.60397194,  0.15977316,  0.18183888,\n",
       "        0.31105083,  0.13849113,  0.53269065,  0.45980106,  0.3883717 ,\n",
       "        0.2866011 ,  0.59133005,  0.55226593,  0.60044985,  0.51179059,\n",
       "        0.5701484 ,  0.50079989,  0.6381072 ,  0.63720368,  0.38266442,\n",
       "        0.46393755,  0.24619198,  0.120933  ,  0.36297815,  0.52407309,\n",
       "        0.45513152,  0.50225618,  0.62816728,  0.01630082,  0.54901254,\n",
       "        0.16757616,  0.58120811,  0.55170886,  0.60605773, -0.01770536])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "silhouette_samples(X,cluster.labels_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "7e7eb424",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "e20953e1",
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.lines.Line2D at 0x2802c6640>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "score=[]\n",
    "for i in range(2,100):\n",
    "    cluster= KMeans(n_clusters=i, random_state=0).fit(X)\n",
    "    score.append(silhouette_score(X,cluster.labels_))\n",
    "plt.plot(range(2,100),score)\n",
    "plt.axvline(pd.DataFrame(score).idxmin()[0]+2,ls=':')\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "31ed90a7",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "from sklearn.metrics import silhouette_samples, silhouette_score\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cm\n",
    "import numpy as np\n",
    "for i in range(2,10,2):\n",
    "    fig, (ax1, ax2) = plt.subplots(1, 2)\n",
    "    fig.set_size_inches(18, 7)\n",
    "# 6个质心的聚合情况，分别画在6张图 # 每张图有两幅子图\n",
    "# 设置大图尺寸\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "9fe55058",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([67, 26, 60,  0, 44, 67, 39, 19, 75, 69, 73, 36, 77, 51, 39, 36,  1,\n",
       "       11,  3, 22, 24,  0, 79, 86, 23, 39, 79, 54,  1, 37, 80, 10, 54, 89,\n",
       "       26, 34, 54, 19, 41,  4,  0, 44, 12, 34, 19, 41,  1, 26, 19,  1, 63,\n",
       "        8, 54, 53,  4, 19, 53, 82, 54, 19, 51, 85,  2, 45, 31, 34,  9, 51,\n",
       "       74, 47, 40, 42, 91, 27, 75,  4, 87, 33, 89, 60, 80, 68, 19,  4, 39,\n",
       "       34, 65, 44, 38, 89, 79, 40, 32, 72, 82, 96,  9, 16, 16, 40, 19,  1,\n",
       "       35, 79, 24, 36, 43, 45, 41, 96, 79, 85, 30, 79,  4, 79, 24, 75, 79,\n",
       "        0, 89, 98,  4, 67,  4,  4, 30,  3,  6, 37, 25, 13, 54, 54, 24, 80,\n",
       "       10, 61,  3, 67, 80, 47, 24, 97, 54, 12, 24, 77, 97, 37, 54, 56, 89,\n",
       "       55, 89, 43, 43, 89, 69, 68,  9,  4, 89, 68, 26, 19,  7, 26, 79,  0,\n",
       "       68, 21,  1,  9, 66,  1, 89, 76, 76, 90, 23, 13, 53, 84, 70, 88, 38,\n",
       "       81, 45, 41, 98, 37, 80, 94, 80,  0, 40, 69, 46, 24, 68, 68, 76, 73,\n",
       "       29, 34, 89, 35, 35, 32,  4, 69, 44, 82, 68,  1, 34,  4, 93,  0,  4,\n",
       "       85,  5, 57, 89, 24, 39, 78, 18, 63, 78, 65, 54, 61, 79, 65, 36, 52,\n",
       "        4,  4,  0,  4, 89,  3, 85, 43, 13,  4, 47, 25, 78, 35, 31, 80, 55,\n",
       "       37,  3, 64,  4, 54, 47, 97, 37, 48,  1, 49, 20, 79, 12,  4, 38, 55,\n",
       "       61,  4, 60, 71, 89, 72,  0, 39, 86, 23,  4, 30, 89, 37, 13, 40, 37,\n",
       "       37, 19, 27, 57, 82, 36, 51, 89, 51, 12, 50, 77, 69, 32, 58,  9, 95,\n",
       "       69, 54, 80, 95,  5, 36, 58,  0, 46, 21,  0, 50, 24, 82, 56, 46, 79,\n",
       "       22, 54,  5, 63, 92,  0, 31, 46, 33,  4, 58, 63, 39, 54, 63, 83, 15,\n",
       "       43, 43, 53, 58, 78,  9, 73, 39,  2, 32, 27, 43, 81,  9, 17, 50,  4,\n",
       "       94, 62,  6,  4, 79, 75, 22, 27,  7, 24, 52, 37,  4, 54, 30, 11,  3,\n",
       "       13, 24, 81, 37, 67,  8,  4, 40, 24, 16, 56, 79, 49,  4,  4, 52,  5,\n",
       "       86, 61, 52, 36, 52, 41, 40, 30,  4, 63, 30, 54, 47, 13, 52, 52, 69,\n",
       "       51, 59, 59, 28,  9, 15, 31, 19, 82, 33, 34, 77, 33, 39, 54, 24, 22,\n",
       "       38, 19, 98, 10,  3, 70, 91, 54, 14, 39, 27,  4, 33, 44, 75],\n",
       "      dtype=int32)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cluster.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "ed30e098",
   "metadata": {},
   "outputs": [],
   "source": [
    "cluster= KMeans(n_clusters=3, random_state=0).fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "8844bfe5",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_label = cluster.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "dd44623c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 0,\n",
       "       1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 0, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 0, 2,\n",
       "       2, 1, 0, 1, 0, 2, 0, 1, 2, 1, 0, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1,\n",
       "       0, 1, 1, 0, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2,\n",
       "       1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 2, 1, 0, 1,\n",
       "       1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 0, 1, 2, 1, 1, 0, 1, 1, 2, 1, 2,\n",
       "       1, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2,\n",
       "       1, 1, 1, 0, 1, 1, 2, 0, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 1, 1, 0, 2,\n",
       "       1, 1, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 1, 2, 1,\n",
       "       1, 2, 0, 0, 1, 1, 1, 0, 2, 0, 0, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 2, 2, 1, 1, 1, 0, 0, 2, 0, 1, 2, 1, 1, 0, 1, 1, 1, 0, 1, 2,\n",
       "       2, 2, 2, 1, 2, 1, 0, 2, 2, 1, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 2, 1, 0, 2, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1,\n",
       "       1, 2, 0, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 1, 0, 0, 2, 1, 0,\n",
       "       1, 2, 1, 2, 0, 1, 1, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 1, 1, 2, 0, 2,\n",
       "       2, 2, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 2, 1, 1, 2, 1, 1, 1, 0, 2, 1, 2, 1, 1, 1, 0, 2, 2, 1, 1, 1,\n",
       "       2, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 0, 0, 2, 2, 2,\n",
       "       2, 1, 2, 1, 1, 1, 1, 0, 2, 1, 2, 1, 2, 0, 1, 2, 1, 1, 1, 2, 1, 2],\n",
       "      dtype=int32)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "deecefc1",
   "metadata": {},
   "outputs": [],
   "source": [
    "clu1 = []\n",
    "clu2 = []\n",
    "clu3 = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "81b7d2de",
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (3362256696.py, line 6)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;36m  File \u001b[0;32m\"/var/folders/c4/ylwfl5_n7g7cwc5yq3pl4bc40000gn/T/ipykernel_48152/3362256696.py\"\u001b[0;36m, line \u001b[0;32m6\u001b[0m\n\u001b[0;31m    else y_label[i] == 2:\u001b[0m\n\u001b[0m         ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "\n",
    "for i in range(0,len(y_label)):\n",
    "    if y_label[i] == 0:\n",
    "        k = k + 1 \n",
    "    elif y_label[i] == 1:\n",
    "        j = j + 1 \n",
    "    else y_label[i] == 2:\n",
    "        o = o + 1\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "879eaec4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_label[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d8fa0f2",
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.pie(x = [0.2,0.3,0.5], # 绘图数据\n",
    "        explode=explode, # 突出显示B\n",
    "        labels=['第一个','第二个','第三个'], # 添加教育水平标签\n",
    "        colors=colors, # 设置饼图的自定义填充色\n",
    "        autopct='%.1f%%', # 设置百分比的格式，这里保留一位小数\n",
    "        pctdistance=0.8,  # 设置百分比标签与圆心的距离\n",
    "        labeldistance = 1.1, # 设置教育水平标签与圆心的距离\n",
    "        startangle = 180, # 设置饼图的初始角度\n",
    "        radius = 2, # 设置饼图的半径\n",
    "        counterclock = False, # 是否逆时针，这里设置为顺时针方向\n",
    "        wedgeprops = {'linewidth': 1.5, 'edgecolor':'red'},# 设置饼图内外边界的属性值\n",
    "        textprops = {'fontsize':10, 'color':'black'}, # 设置文本标签的属性值\n",
    "       )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3.9",
   "language": "python",
   "name": "python3.9"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
